#ifndef RENDER_CONTROLLER_H
#define RENDER_CONTROLLER_H

#include "stdafx.h"
#include "DeviceList.h"
#include "Ray.h"
#include "RenderContext.h"

namespace RayTracePro
{
	class Scene;
	class Renderer;
	class RenderController
	{
	private:
		RenderContext * context;
		Scene * scene;
		Renderer * renderer;
	public:
		RenderController(RenderContext * context, Scene * scene, Renderer * renderer);
	public:
		void TraceRay(DeviceList<DifferentialGeometry> & result, 
					  DeviceList<Ray> & rays, 
					  DeviceList<RayDifferential> & rayDiffs);
		void Shade(DeviceList<float> & colors,
				   DeviceList<DifferentialGeometry> & intersections, 
				   DeviceList<Ray> & rays, 
				   DeviceList<RayDifferential> & rayDiffs);
	};
}

#endif